import random

def number_guessing_game():
    # 初始化全局游戏参数（跨轮不重置）
    total_gold = 5000  # 玩家初始金币（多轮累计）
    total_round = 0     # 记录总游戏轮数
    total_attempts = 0  # 记录总猜测次数

    # 游戏欢迎界面
    print("=" * 50)
    print("         欢迎来到【带金币系统的猜数字游戏】")
    print("=" * 50)
    print(f"初始金币：{total_gold} 枚")
    print("游戏规则：")
    print("1. 每轮系统生成 1-100 之间的随机数")
    print("2. 每次猜错扣除 500 金币，猜对奖励 3000 金币")
    print("3. 金币不足 500 时自动结束游戏")
    print("4. 猜对后可选择是否继续下一轮\n")

    # 游戏主循环（控制是否继续下一轮）
    while True:
        # 检查是否有足够金币开启新轮（不足则直接结束）
        if total_gold < 500:
            print("\n" + "=" * 50)
            print("【游戏结束】金币不足 500，无法开启新轮！")
            print(f"最终统计：总轮数 {total_round} 轮 | 总猜测次数 {total_attempts} 次 | 剩余金币 {total_gold} 枚")
            print("=" * 50)
            break

        # 初始化单轮游戏参数（每轮重置）
        total_round += 1  # 轮数+1
        round_attempts = 0  # 单轮猜测次数
        secret_number = random.randint(1, 100)  # 每轮重新生成随机数
        round_over = False  # 标记单轮是否结束

        # 单轮游戏开始提示
        print(f"\n【第 {total_round} 轮】- 当前金币：{total_gold} 枚")
        print("请开始猜测 1-100 之间的数字...")

        # 单轮猜测循环（直到猜对或金币不足）
        while not round_over:
            try:
                # 获取玩家输入
                guess = int(input(f"第 {round_attempts + 1} 次猜测：请输入数字："))
                round_attempts += 1
                total_attempts += 1  # 累计总猜测次数

                # 1. 验证输入范围（无效输入不扣金币）
                if guess < 1 or guess > 100:
                    print("❌ 输入无效！请输入 1-100 之间的数字，不扣除金币\n")
                    continue

                # 2. 判断猜测结果
                if guess > secret_number:
                    total_gold -= 500
                    print(f"❌ 猜大了！扣除 500 金币，剩余金币：{total_gold} 枚")
                    # 检查扣钱后是否还能继续本轮
                    if total_gold < 500:
                        round_over = True  # 金币不足，结束单轮
                        print("⚠️  金币已不足 500，本轮结束\n")

                elif guess < secret_number:
                    total_gold -= 500
                    print(f"❌ 猜小了！扣除 500 金币，剩余金币：{total_gold} 枚")
                    # 检查扣钱后是否还能继续本轮
                    if total_gold < 500:
                        round_over = True  # 金币不足，结束单轮
                        print("⚠️  金币已不足 500，本轮结束\n")

                else:
                    # 3. 猜对了：奖励金币 + 询问是否继续
                    total_gold += 3000
                    print("\n" + "🎉" * 20)
                    print(f"恭喜猜对！第 {total_round} 轮结束")
                    print(f"幸运数字：{secret_number}")
                    print(f"本轮猜测次数：{round_attempts} 次")
                    print(f"获得奖励：3000 金币 | 当前总金币：{total_gold} 枚")
                    print("🎉" * 20 + "\n")

                    # 询问是否继续下一轮（核心新功能）
                    while True:  # 处理无效选择（只接受 y/n）
                        continue_choice = input("是否继续下一轮游戏？（输入 y 继续，n 退出）：").strip().lower()
                        if continue_choice == "y":
                            round_over = True  # 结束当前轮，进入下一轮
                            print("\n" + "-" * 30 + " 准备开启下一轮 " + "-" * 30)
                            break
                        elif continue_choice == "n":
                            # 玩家选择退出，显示最终统计
                            print("\n" + "=" * 50)
                            print("【玩家主动退出】游戏结束！")
                            print(f"最终统计：总轮数 {total_round} 轮 | 总猜测次数 {total_attempts} 次 | 剩余金币 {total_gold} 枚")
                            print("感谢参与，下次再见！")
                            print("=" * 50)
                            return  # 直接退出函数，终止所有循环
                        else:
                            print("❌ 选择无效！请输入 y（继续）或 n（退出）\n")

            # 处理非数字输入（不扣金币）
            except ValueError:
                print("❌ 输入无效！请输入整数，不扣除金币\n")

# 启动游戏
if __name__ == "__main__":
    number_guessing_game()